// BPMN设计器汉化工具
export function initBpmnI18n() {
  console.log('初始化BPMN汉化...')
  
  // 汉化映射
  const translations = {
    // 调色板元素
    'Start Event': '开始事件',
    'End Event': '结束事件',
    'Task': '任务',
    'User Task': '用户任务',
    'Service Task': '服务任务',
    'Script Task': '脚本任务',
    'Manual Task': '手工任务',
    'Business Rule Task': '业务规则任务',
    'Send Task': '发送任务',
    'Receive Task': '接收任务',
    'Exclusive Gateway': '排他网关',
    'Parallel Gateway': '并行网关',
    'Inclusive Gateway': '包容网关',
    'Event-based Gateway': '事件网关',
    'Complex Gateway': '复杂网关',
    'Sub Process': '子流程',
    'Call Activity': '调用活动',
    'Data Object': '数据对象',
    'Data Store': '数据存储',
    'Text Annotation': '文本注释',
    'Group': '组',
    'Boundary Event': '边界事件',
    'Intermediate Event': '中间事件',
    'Message': '消息',
    'Timer': '定时器',
    'Error': '错误',
    'Escalation': '升级',
    'Cancel': '取消',
    'Compensation': '补偿',
    'Conditional': '条件',
    'Link': '链接',
    'Signal': '信号',
    'Multiple': '多重',
    'Parallel Multiple': '并行多重',
    'Terminate': '终止',
    
    // 属性面板
    'Name': '名称',
    'ID': '标识符',
    'Documentation': '文档',
    'Assignee': '指派人',
    'Candidate Groups': '候选组',
    'Candidate Users': '候选用户',
    'Due Date': '到期日期',
    'Follow Up Date': '跟进日期',
    'Priority': '优先级',
    'Form Key': '表单键',
    'Form Fields': '表单字段',
    'Form Data': '表单数据',
    'Owner': '所有者',
    'Category': '类别',
    'Description': '描述',
    'Type': '类型',
    'Value': '值',
    'Default Value': '默认值',
    'Required': '必需',
    'Readable': '可读',
    'Writable': '可写',
    'Script Format': '脚本格式',
    'Script Type': '脚本类型',
    'Script': '脚本',
    'Result Variable': '结果变量',
    'Resource': '资源',
    'Implementation': '实现',
    'Operation': '操作',
    'Topic': '主题',
    'Message Name': '消息名称',
    'Message Ref': '消息引用',
    'Error Code': '错误代码',
    'Error Message': '错误消息',
    'Escalation Code': '升级代码',
    'Condition': '条件',
    'Expression': '表达式',
    'Language': '语言',
    'Delegate Expression': '委托表达式',
    'Class': '类',
    'External': '外部',
    'Decision Table': '决策表',
    'Decision Model': '决策模型',
    'Case Definition Key': '案例定义键',
    'Case Definition Id': '案例定义ID',
    'Business Key': '业务键',
    'In': '输入',
    'Out': '输出',
    'Local': '本地',
    'Collection': '集合',
    'Element Variable': '元素变量',
    'Completion Condition': '完成条件'
  }
  
  // 汉化函数
  function localizeElement(element) {
    if (!element) return
    
    // 汉化title属性
    const title = element.getAttribute('title')
    if (title && translations[title]) {
      element.setAttribute('title', translations[title])
      console.log(`汉化title: ${title} -> ${translations[title]}`)
    }
    
    // 汉化文本内容
    const text = element.textContent?.trim()
    if (text && translations[text]) {
      element.textContent = translations[text]
      console.log(`汉化文本: ${text} -> ${translations[text]}`)
    }
  }
  
  // 汉化所有相关元素
  function localizeAll() {
    // 汉化调色板元素
    const paletteEntries = document.querySelectorAll('.djs-palette .entry')
    paletteEntries.forEach(localizeElement)
    
    // 汉化属性面板元素
    const propertiesElements = document.querySelectorAll('.bpp-properties-panel *')
    propertiesElements.forEach(localizeElement)
    
    // 汉化画布元素
    const canvasElements = document.querySelectorAll('.djs-element')
    canvasElements.forEach(localizeElement)
  }
  
  // 使用MutationObserver监听DOM变化
  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      if (mutation.type === 'childList') {
        mutation.addedNodes.forEach((node) => {
          if (node.nodeType === Node.ELEMENT_NODE) {
            localizeElement(node)
            
            // 检查子元素
            const children = node.querySelectorAll && node.querySelectorAll('*')
            if (children) {
              children.forEach(localizeElement)
            }
          }
        })
      }
    })
  })
  
  // 开始观察
  observer.observe(document.body, {
    childList: true,
    subtree: true
  })
  
  // 立即执行一次汉化
  localizeAll()
  
  // 定期执行汉化
  const interval = setInterval(() => {
    localizeAll()
  }, 2000)
  
  // 10秒后停止定期执行
  setTimeout(() => {
    clearInterval(interval)
    console.log('BPMN汉化初始化完成')
  }, 10000)
  
  return {
    localizeAll,
    observer
  }
}

// 全局初始化
if (typeof window !== 'undefined') {
  window.initBpmnI18n = initBpmnI18n
}
